package com.jdd.fintech.morse.plugin.ecrypts;

import com.jdd.fintech.morse.plugin.enums.EncrAndDecrAlgorithmTypeEnum;

import javax.crypto.spec.IvParameterSpec;

/**
 * DES加密算法实现<br>
 * DES全称为Data Encryption Standard，即数据加密标准，是一种使用密钥加密的块算法<br>
 * Java中默认实现为：DES/CBC/PKCS5Padding
 */
public class DES extends SymmetricCrypto {
	private static final long serialVersionUID = 1L;

	static final protected EncrAndDecrAlgorithmTypeEnum DEFAULT_ALGORITHM = EncrAndDecrAlgorithmTypeEnum.DES;

	// ------------------------------------------------------------------------- Constrctor start
	/**
	 * 构造
	 *
	 * @param key     密钥，长度：8的倍数
	 */
	public DES(String key) {
		super(DEFAULT_ALGORITHM, null, key, 8, null);
	}

	/**
	 * 构造
	 *
	 * @param mode    模式
	 * @param padding 补码方式
	 * @param key     密钥，长度：8的倍数
	 * @param key     密钥长度
	 * @param iv      加盐
	 */
	public DES(String mode, String padding, String key, Integer keyLength, IvParameterSpec iv) {
		super(DEFAULT_ALGORITHM,  String.format("%s/%s/%s", DEFAULT_ALGORITHM.getValue(), mode, padding), key, keyLength, iv);
	}
	// ------------------------------------------------------------------------- Constrctor end

}
